/*
 *    This program is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *    2011 year
 *    Author: Michael Khromov aka MikeDM (Mike D'Morto)
 *    E-Mail: mikedmorto@gmail.com
 */


/*
плагин для установки паролей пользователей
простой пользователь будет менять только у себя
а админ всем существующим. такова доля админская.

логика работы данного плагина проста, после инициализации
из плагина выдергивают его имя соответствующим методом.
и только exec запускает рабочий цикл плагина.

конкретно наш плагин в зависимости от режима user или admin
будет формировать диалог с такими же режимами.
грубо говоря вся работа по интерфейсу уходит в диалог, а этот класс
занимается только работой с базой и предоставлением данных в диалог.


*/

#include "liblogon_std_config.h"

bool Liblogon_std_config::init(const QStringList &cfg, const QString &lng){
    // подключаем перевод.
    QTranslator * trans = new QTranslator();
    if(trans->load(QString("%1/%2/%3.qm").arg(LANG_PREFIX).arg(PLUGIN_NAME).arg(lng))){
            QCoreApplication::installTranslator(trans);
            emit this->sigPutLog(PLUGIN_NAME,3,QString(tr("Debug: success translate %1")).arg(lng));
        }else{
            emit this->sigPutLog(PLUGIN_NAME,1,QString("fail translate %1").arg(lng));
        }
    emit this->sigPutLog(PLUGIN_NAME,2,tr("Info: start init"));
    emit this->sigPutLog(PLUGIN_NAME,3,tr("Debug: parsing config string"));
    // ищем mode. если не установлено, то по умолчанию ставится user;
    this->mode="user";
    for(int i = 0 ; i < cfg.size() ; i++){
        QStringList tt = cfg.at(i).split("=");
        if(tt.at(0)=="mode"){
                if(tt.size() > 1){
                    emit this->sigPutLog(PLUGIN_NAME,3,tr("Debug: mode found"));
                    this->mode=cfg.at(i).split("=").at(1);
                }
        }
    }
    qDebug()<<"mode - "<<this->mode;

    return true;
}

QString Liblogon_std_config::getPluginName(){
    return tr("standart logon config");
}

QIcon Liblogon_std_config::getPluginIcon(){
    QIcon aa(QString(IMG_PREFIX)+"/"+QString(PLUGIN_NAME)+"/icon.svg");
    return aa;
}

bool Liblogon_std_config::exec(){
    qDebug()<<"EXECCCCCC";
    this->dia = new MainDialog(this->mode);
    QIcon aa(QString(IMG_PREFIX)+"/"+QString(PLUGIN_NAME)+"/icon.svg");
    this->dia->setWindowIcon(aa);
    return dia->exec();

}

void Liblogon_std_config::slotDbError(const QString &pl_name, const QString &errtext){

}

void Liblogon_std_config::slotDbResult(const QString &pl_name, int id, Mdata *data){

}

QString Liblogon_std_config::getlastError(){
    return this->lastError;
}

Q_EXPORT_PLUGIN2(iWorker,Liblogon_std_config)
